/**
 * 全局图片缓存管理器
 * 用于在标签页切换时保持图片的加载状态
 */

class ImageCacheManager {
  constructor() {
    this.cache = new Map() // 存储图片的本地缓存路径
    this.loadingStates = new Map() // 存储图片的加载状态
    this.maxCacheSize = 100 // 最大缓存数量
  }

  /**
   * 设置图片的本地缓存路径
   * @param {string} originalUrl - 原始图片URL
   * @param {string} localPath - 本地缓存路径
   */
  setCache(originalUrl, localPath) {
    if (this.cache.size >= this.maxCacheSize) {
      // 如果缓存已满，删除最旧的缓存
      const firstKey = this.cache.keys().next().value
      this.cache.delete(firstKey)
    }
    this.cache.set(originalUrl, localPath)
    console.log('📦 图片缓存已设置:', originalUrl, '->', localPath)
  }

  /**
   * 获取图片的本地缓存路径
   * @param {string} originalUrl - 原始图片URL
   * @returns {string|null} - 本地缓存路径，如果没有则返回null
   */
  getCache(originalUrl) {
    const cached = this.cache.get(originalUrl)
    if (cached) {
      console.log('📦 从缓存获取图片:', originalUrl, '->', cached)
    }
    return cached || null
  }

  /**
   * 检查图片是否已缓存
   * @param {string} originalUrl - 原始图片URL
   * @returns {boolean} - 是否已缓存
   */
  hasCache(originalUrl) {
    return this.cache.has(originalUrl)
  }

  /**
   * 设置图片的加载状态
   * @param {string} originalUrl - 原始图片URL
   * @param {boolean} loaded - 是否已加载
   */
  setLoadingState(originalUrl, loaded) {
    this.loadingStates.set(originalUrl, loaded)
  }

  /**
   * 获取图片的加载状态
   * @param {string} originalUrl - 原始图片URL
   * @returns {boolean} - 是否已加载
   */
  getLoadingState(originalUrl) {
    return this.loadingStates.get(originalUrl) || false
  }

  /**
   * 清除指定图片的缓存
   * @param {string} originalUrl - 原始图片URL
   */
  clearCache(originalUrl) {
    this.cache.delete(originalUrl)
    this.loadingStates.delete(originalUrl)
    console.log('🗑️ 清除图片缓存:', originalUrl)
  }

  /**
   * 清除所有缓存
   */
  clearAllCache() {
    this.cache.clear()
    this.loadingStates.clear()
    console.log('🗑️ 清除所有图片缓存')
  }

  /**
   * 获取缓存统计信息
   * @returns {object} - 缓存统计信息
   */
  getCacheStats() {
    return {
      cacheSize: this.cache.size,
      maxCacheSize: this.maxCacheSize,
      loadingStatesSize: this.loadingStates.size
    }
  }
}

// 创建全局单例
const imageCacheManager = new ImageCacheManager()

export default imageCacheManager
